/**
 * @module 依赖注入容器相关类型定义
 */

// 服务生命周期类型
export enum EServiceScope {
  SINGLETON = 'singleton', // 单例模式
  REQUEST = 'request' // 请求模式
}

// 容器的服务定义类型
export interface IContainerService<T = any> {
  constructor?: new (...args: any) => T // 服务定义
  instance?: T // 服务实例
  dependencies?: EContainerServiceName[] // 依赖
  scope?: EServiceScope // 生命周期
}

// 容器服务名称枚举
export enum EContainerServiceName {
  REQUEST = 'REQUEST', // 请求
  RESPONSE = 'RESPONSE' // 响应
}
